import {getPayQrcode, getPayStatus} from '../../service/pay'

Component({
    /**
     * 组件的属性列表
     */
    properties: {

    },

    /**
     * 组件的初始数据
     */
    data: {
        order_id: 0,
        timer: 0,
        showPay: false,
        qr_code_url: ''
    },

    /**
     * 组件的方法列表
     */
    methods: {
        // 如果关闭了模态框, 那么就跳到订单详情
        toOrderInfo() {
            // 先清除定时器
            clearInterval(this.data.timer)

            wx.redirectTo({
                url: '/pages/order_info/order_info?order_id=' + this.data.order_id,
            })
        },

        /**
         * 获取支付二维码, 并显示弹窗
         */
        getPayQrcode(order_id) {
            // 利用 data 缓存一下 order_id, 因为其他地方可能要用
            this.setData({order_id})

            // 由于没有企业的资质, 暂时使用支付宝沙箱测试
            const data = {
                type: 'aliyun' // 使用支付宝支付, 因为微信不提供沙箱测试
            }
        
            getPayQrcode(order_id, data).then(payConfig => {
                // 真实的项目, 应该是请求微信的支付配置, 调用小程序api, 发起微信支付
                // wx.requestPayment({
                //     timeStamp: payConfig.timeStamp,
                //     nonceStr: payConfig.nonceStr,
                //     package: payConfig.package,
                //     signType: 'MD5',
                //     paySign: payConfig.paySign,
                //     success (res) { 
                //         // 调用成功
                //         // 检查订单状态
                //     },
                //     fail (res) { }
                // })
            
                // TODO 监听支付状态, 如果支付成功, 跳到支付成功的页面
                const timer = setInterval(() => {
                    getPayStatus(order_id).then(payStatus => {
                        // 状态为 2 就是支付成功了, 调整支付成功的页面
                        if (payStatus == 2) {
                            clearInterval(timer)
                            wx.redirectTo({
                              url: '/pages/pay_success/pay_success?order_id=' + order_id,
                            })
                        }
                    })
                }, 2000)

                // 将定时器索引设置给 data , 方便其他方法结束定时器
                this.setData({
                    timer: timer,
                    showPay: true,
                    qr_code_url: payConfig.qr_code_url
                })
                
            })
        }
    }
})
